package moc.type;

public class ARRAYTYPE implements DTYPE {
	
	
	private int capacite ;
	private DTYPE type ;

	@Override
	public int getTaille() {
		return capacite*type.getTaille();
	}

	@Override
	public boolean conforms(DTYPE autre) {
		return equals(autre)|| autre instanceof ARRAYTYPE && ((ARRAYTYPE)autre).getType().equals(type) || 
				autre instanceof POINTEURTYPE && ((POINTEURTYPE)autre).typePointe().conforms(this);
	}

	@Override
	public boolean equals(DTYPE autre) {
		
		return autre instanceof ARRAYTYPE && ((ARRAYTYPE)autre).getCapacite() == capacite 
				&& ((ARRAYTYPE)autre).getType().equals(type) || 
				autre instanceof POINTEURTYPE && ((POINTEURTYPE)autre).typePointe().equals(this)
		;
	}

	public int getCapacite() {
		return capacite;
	}

	public DTYPE getType() {
		return type;
	}

	public ARRAYTYPE(String capacite, DTYPE type) {
		super();
		this.capacite =Integer.parseInt(capacite) ;
		this.type = type;
	}

	public String toString(){
	return type+"["+capacite+"]" ;	
		
	}
	
}
